package cn.com.yang.datastruct.list;

/**
 * @since 2023.07.10
 */
public class ArrayTest1 {
    public static void main(String[] args) {
        ArrayClass arrayClass = new ArrayClass(100);
        //新增
        arrayClass.insert(11);
        arrayClass.insert(19);
        arrayClass.insert(41);
        arrayClass.insert(37);
        arrayClass.insert(29);
        arrayClass.insert(99);
    }
}

/**
 * 创建一个类封装数组
 * @since 2023.07.10
 */
class ArrayClass {
    private long[] arr;//被封装的数组
    private int nElems;//数组元素存在的个数
    public ArrayClass(int maxSize){//数组的最大长度
        arr=new long[maxSize];
        nElems=0;
    }
    //新增数据项，数组元素
    public void insert(long data){
        arr[nElems] =data;
        nElems++;
    }
    //查找某一特定的数据项
    //找到了就返回true,没找到就返回false
    public boolean find(long search){
        int i;
        for (i = 0; i < nElems; i++) {
            if (search==arr[i]){
                break;//找到终止循环，因为是无序，所以不能使用二分查找
            }
        }
        if (i==nElems){
            //没有在数组中找到制定的元素
            return false;
        }else {
            return true;
        }
    }
    //删除数据项
    public void delete(long targetDate){
        int i;
        for (i = 0; i < nElems; i++) {
            if (targetDate==arr[i]){
                break;//找到终止循环，因为是无序，所以不能使用二分查找
            }
        }
        if (i==nElems){
            //没有在数组中找到制定的元素
            System.out.println("没有找到要删除的数据");
        }else {
            for (int j = i; j <nElems ; j++) {
                arr[j] = arr[j+1];//删除元素
            }
            nElems--;
        }
    }
    public void forEach(){
        //访问遍历数据结构的每一个数据项
        for(int i =0;i<nElems;i++){
            System.out.print(arr[i]+" ");
        }
        System.out.println("");
    }
}
